package com.hpl.singletonmode.singleton;

/**
 * 静态内部类
 * <p>
 * 利用类加载机制实现懒加载，同时保证线程安全。
 * 静态内部类 Holder 是延迟加载的：
 * Holder 类不会在 Singleton 类加载时立即加载，而是在首次调用 getInstance() 方法时才会加载并初始化
 * Holder 的加载是线程安全的：
 * 由于类的加载和初始化由 JVM 保证线程安全，因此在 Holder 加载时，INSTANCE 只会被创建一次
 * </p>
 * @author hpl
 * @since 2024/12/12
 */
public class SingletonStaticInner {

    private SingletonStaticInner() {}

    private static class Holder {
        private static final SingletonStaticInner INSTANCE = new SingletonStaticInner();
    }

    public static SingletonStaticInner getInstance() {
        return Holder.INSTANCE;
    }
}
